
function CategoryManager(inBackendPoi,inBackendCategories){
    //COSTRUTTORE---------------------------------------------------------------
    /***
     * inizializzazione delle variabili d'ambiente
     */
    this.categoryList=new Array();
    this.eventList=new Array();
    if(inBackendPoi!=null)
        this.backendPoi=inBackendPoi;
    else
        this.backendCategories="http://admin.festivalscienza.it/jsonget.php?get=categoria";
    //this.backendPoi='utility/backend.evtIdList.php';
    if(inBackendCategories!=null)
        this.backendCategories=inBackendCategories;
    else
        //this.backendCategories='utility/backend.evtCategory.php';
        this.backendCategories="http://admin.festivalscienza.it/jsonget.php?get=categoria";
    
    //FINE COSTRUTTORE----------------------------------------------------------
    /**
     * richiesta ajax verso il file utility/backend.poiCategory.php effettuata
     * tramite extJs che permette di ottenere la lista di categorie di poi.
     * Dopo il recupero della lista di categorie viene chiamata la funzione di
     * callback passata come parametro
     */
    this.getCategoryList=function(callback){
        jsonQuery(new Object(),
            poiman.backendCategories,
            function(responseObject){
                try{
                    poiman.encodeCategoryList(responseObject,callback);
                }catch(e){
                    alert(dump(e));
                }
            }, function(){
                printErrorMessage('Errore', 'Si &egrave; verificato un errore nel corso del caricamento della lista di tipologie dei punti di interesse. Ricaricare la pagina. Se il problema persiste contattare l\'amministratore di sistema '+dump(error));
            }
            );
    }
    

    /**
     * Funzione che prende una stringa contenente un messaggio json rappresentante
     * la lista di categorie e crea (all'interno dell'elemento con id=idTagCategoriePoi)
     * una lista di checkboxes legate ciascuna alla singola categoria. Quando il valore
     * all'interno delle checkboxes è alterato, viene chiamata la funzione di callback
     * callbackPoiCheckButton
     */
    this.encodeCategoryList=function(stringin, callback){
        var status;
        try {
            //alert(dump(callback));
            //processo stringin
            status="ini";
            //var decoding=removeJsonpPaddign(stringin);
            var decoding=stringin;
            //alert(dump(stringin));
            //meglio fare così perchè talvolta il decoding di json con gli array
            //crea problemi, io invece vorrei che la lista di cat fosse vista come
            //array puro.
            poiman.categoryList=new Array();
            status="dec";
            for(var dect in decoding){
                poiman.categoryList.push(decoding[dect]);
            //                towrite="<input type='checkbox' id='checkBoxPoiCat"+decoding[dect]['id']+"' name='"+decoding[dect]['titolo']+"' onChange='callbackPoiCheckButton(\"checkBoxPoiCat"+decoding[dect]['id']+"\","+decoding[dect]['id']+");'/> "+decoding[dect]['titolo']+"<br />";
            //                document.getElementById(idTagCategoriePoi).innerHTML+=towrite;
            }
            status="callback";
            //alert(dump(callback));

            callback();
            status="afterCallback";
        } catch (err){
            alert("encodeCategoryList: errore\n"+status+"\n"+err.toString());
        //            document.getElementById(idTagCategoriePoi).innerHTML+=err.toString();
        //            document.getElementById(idTagCategoriePoi).innerHTML+="encodeCategoryList: Non è stato passato un array";
        }
    //document.getElementById("categorie_poi").innerHTML=stringin;
    }

    /**
     * Carico le icone delle categorie a partire dagli id
     */
    this.getCategoryIcon=function(idFam,idCat){
        var home="http://www.festivalscienza.it/contents/instance2/pianificatore/resources/img/";
        var icon="";
        switch(idFam+"_"+idCat){
            case "1_2":
                icon=home+"conferenze";
                break;
            case "1_3":
                icon=home+"spettacoli";
                break;
            case "1_4":
                icon=home+"eventi";
                break;
            case "1_5":
                icon=home+"mostre";
                break;
            case "1_6":
                icon=home+"laboratori";
                break;
            default:
                icon="";
        }
        if(icon=="")
            return "";
        else
            return icon+"_.png";
    }
}